package tools

import (
	"fmt"
	"os"
	"os/exec"
	"runtime"
	"strconv"
	"syscall"
)

func (t Command) Kill() {
	// 假设这是要杀死的进程的PID
	if len(os.Args) != 3 {
		fmt.Println("请求参数有误！请参考：yt kill {pid}")
		return
	}
	pid := os.Args[2]

	// 获取要杀死的进程
	// 将pid从字符串转换为整数
	pidInt, err := strconv.Atoi(pid)
	if err != nil {
		fmt.Printf("无法将PID转换为整数: %v\n", err)
		return
	}

	var killErr error
	if runtime.GOOS == "windows" {
		// 在Windows下使用taskkill命令杀死进程
		cmd := exec.Command("taskkill", "/F", "/PID", strconv.Itoa(pidInt))
		killErr = cmd.Run()
	} else {
		// 在Linux下使用os.FindProcess和发送信号杀死进程
		process, err := os.FindProcess(pidInt)
		if err != nil {
			fmt.Printf("无法找到进程: %v\n", err)
			return
		}
		killErr = process.Signal(syscall.SIGTERM)
	}

	if killErr != nil {
		fmt.Printf("无法杀死进程: %v\n", killErr)
		return
	}

	fmt.Printf("已杀死进程 %s\n", pid)
}
